package lanou.a36ke_01.activity.mineactivity;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.support.v7.app.AlertDialog;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import cn.bmob.v3.BmobUser;
import cn.bmob.v3.exception.BmobException;
import cn.bmob.v3.listener.UpdateListener;
import lanou.a36ke_01.R;
import lanou.a36ke_01.tools.BaseActivity;
import lanou.a36ke_01.tools.MyUser;

/**
 * 　　　　　　　　┏┓　　　┏┓+ +
 * 　　　　　　　┏┛┻━━━┛┻┓ + +
 * 　　　　　　　┃　　　　　　　┃
 * 　　　　　　　┃　　　━　　　┃ ++ + + +
 * 　　　　　　 ████━████ ┃+
 * 　　　　　　　┃　　　　　　　┃ +
 * 　　　　　　　┃　　　┻　　　┃
 * 　　　　　　　┃　　　　　　　┃ + +
 * 　　　　　　　┗━┓　　　┏━┛
 * 　　　　　　　　　┃　　　┃
 * 　　　　　　　　　┃　　　┃ + + + +
 * 　　　　　　　　　┃　　　┃　　　　Code is far away from bug with the animal protecting
 * 　　　　　　　　　┃　　　┃ + 　　　　神兽保佑代码无BUG,
 * <p>
 * 　　　　　　　　　┃　　　┃
 * 　　　　　　　　　┃　　　┃　　+
 * 　　　　　　　　　┃　 　　┗━━━┓ + +
 * 　　　　　　　　　┃ 　　　　　　　┣┓
 * 　　　　　　　　　┃ 　　　　　　　┏┛
 * 　　　　　　　　　┗┓┓┏━┳┓┏┛ + + + +
 * 　　　　　　　　　　┃┫┫　┃┫┫
 * 　　　　　　　　　　┗┻┛　┗┻┛+ + + +
 * <p>
 * Created by 史静雯 date
 */
public class UserActivity extends BaseActivity implements View.OnClickListener {

    private ImageView photo;
    private TextView userName;
    private Button exit;
    private MyUser myUser;
    private Bitmap head;
    private static String path = "/sdcard/myHead";

    @Override
    protected int setLayout() {
        return R.layout.activity_user;
    }

    @Override
    protected void initView() {
        photo = (ImageView) findViewById(R.id.activity_user_photo);
        userName = (TextView) findViewById(R.id.activity_user_name);
        exit = (Button) findViewById(R.id.activity_user_exit);
    }


    @Override
    protected void initDate() {

        photo.setOnClickListener(this);
        myUser = MyUser.getCurrentUser(MyUser.class);
        String bmobUser = myUser.getUsername();
        userName.setText(bmobUser);

        exit.setOnClickListener(this);


//        if (myUser.getIcon() == null){
//            photo.setImageResource(R.mipmap.ic_launcher);
//        } else {
//            photo.setImageBitmap(myUser.getIcon());
//        }
//        开始上传头像
////        获得图片
//        Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
//        myUser.setIcon(bitmap);
//        //保存
//        myUser.update(new UpdateListener() {
//            @Override
//            public void done(BmobException e) {
//                if (e != null) {
//                    Log.d("MainActivity", "更新失败" + e.toString());
//                } else {
//                    Log.d("MainActivity", "更新成功");
//                }
//            }
//
//        });

    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.activity_user_exit:
                //退出登录
                myUser.logOut();
                //清除缓存用户对象
                MyUser currentUser = (MyUser) MyUser.getCurrentUser();
                finish();
                break;
            case R.id.activity_user_photo:
                showTypeDialog();
                break;
        }
    }

    //显示Dialog
    private void showTypeDialog() {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        final AlertDialog dialog = builder.create();
        View view = View.inflate(this, R.layout.dialog_select_photo, null);
        TextView tv_select_gallery = (TextView) view.findViewById(R.id.tv_select_gallery);
        TextView tv_select_camera = (TextView) view.findViewById(R.id.tv_select_camera);
        tv_select_gallery.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent1 = new Intent(Intent.ACTION_PICK, null);
                intent1.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");
                startActivityForResult(intent1, 1);
                dialog.dismiss();
            }
        });
        tv_select_camera.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent2 = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                intent2.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "head.jpg")));
                startActivityForResult(intent2, 2);
                dialog.dismiss();
            }
        });
        dialog.setView(view);
        dialog.show();
    }

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch (requestCode) {
            case 1:
                if (resultCode == RESULT_OK) {
                    cropPhoto(data.getData());
                }
                break;
            case 2:
                if (resultCode == RESULT_OK) {
                    File temp = new File(Environment.getExternalStorageDirectory() + "/head.jpg");
                    cropPhoto(Uri.fromFile(temp));
                }
                break;
            case 3:
                Bundle extras = data.getExtras();
                head = extras.getParcelable("data");
                photo.setImageBitmap(head);

                MyUser myUser = BmobUser.getCurrentUser(MyUser.class);
                myUser.setIcon(head);
                myUser.update(myUser.getObjectId(), new UpdateListener() {
                    @Override
                    public void done(BmobException e) {
                        if (e == null) {
                            Log.d("UserActivity", "成功");
                        }else {
                            Log.d("UserActivity", "失败"+e.toString());
                        }
                    }
                });


                break;
//            default:
//                break;
        }
        super.onActivityResult(requestCode, resultCode, data);
    }

    public void cropPhoto(Uri uri) {
        Intent intent = new Intent("com.android.camera.action.CROP");
        intent.setDataAndType(uri, "image/*");
        intent.putExtra("crop", "true");
        // aspectX aspectY 是宽高的比例
        intent.putExtra("aspectX", 1);
        intent.putExtra("aspectY", 1);
        // outputX outputY 是裁剪图片宽高
        intent.putExtra("outputX", 150);
        intent.putExtra("outputY", 150);
        intent.putExtra("return-data", true);
        startActivityForResult(intent, 3);
    }
}

